home *** CD-ROM | disk | FTP | other *** search
- // Copyright (c) 2013 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
-
- cr.define('indexeddb', function() {
- 'use strict';
-
- function initialize() {
- chrome.send('getAllOrigins');
- }
-
- function progressNodeFor(link) {
- return link.parentNode.querySelector('.download-status');
- }
-
- function downloadOriginData(event) {
- var link = event.target;
- progressNodeFor(link).style.display = 'inline';
- chrome.send('downloadOriginData', [link.idb_partition_path,
- link.idb_origin_url]);
- return false;
- }
-
- function forceClose(event) {
- var link = event.target;
- progressNodeFor(link).style.display = 'inline';
- chrome.send('forceClose', [link.idb_partition_path,
- link.idb_origin_url]);
- return false;
- }
-
- function withNode(selector, partition_path, origin_url, callback) {
- var links = document.querySelectorAll(selector);
- for (var i = 0; i < links.length; ++i) {
- var link = links[i];
- if (partition_path == link.idb_partition_path &&
- origin_url == link.idb_origin_url) {
- callback(link);
- }
- }
- }
- // Fired from the backend after the data has been zipped up, and the
- // download manager has begun downloading the file.
- function onOriginDownloadReady(partition_path, origin_url, connection_count) {
- withNode('a.download', partition_path, origin_url, function(link) {
- progressNodeFor(link).style.display = 'none';
- });
- withNode('.connection-count', partition_path, origin_url, function(span) {
- span.innerText = connection_count;
- });
- }
-
- function onForcedClose(partition_path, origin_url, connection_count) {
- withNode('a.force-close', partition_path, origin_url, function(link) {
- progressNodeFor(link).style.display = 'none';
- });
- withNode('.connection-count', partition_path, origin_url, function(span) {
- span.innerText = connection_count;
- });
- }
-
- // Fired from the backend with a single partition's worth of
- // IndexedDB metadata.
- function onOriginsReady(origins, partition_path) {
- var template = jstGetTemplate('indexeddb-list-template');
- var container = $('indexeddb-list');
- container.appendChild(template);
- jstProcess(new JsEvalContext({ idbs: origins,
- partition_path: partition_path}), template);
-
- var downloadLinks = container.querySelectorAll('a.download');
- for (var i = 0; i < downloadLinks.length; ++i) {
- downloadLinks[i].addEventListener('click', downloadOriginData, false);
- }
- var forceCloseLinks = container.querySelectorAll('a.force-close');
- for (i = 0; i < forceCloseLinks.length; ++i) {
- forceCloseLinks[i].addEventListener('click', forceClose, false);
- }
- }
-
- return {
- initialize: initialize,
- onForcedClose: onForcedClose,
- onOriginDownloadReady: onOriginDownloadReady,
- onOriginsReady: onOriginsReady,
- };
- });
-
- document.addEventListener('DOMContentLoaded', indexeddb.initialize);
-